C 언어 구조체

IT 위키

C 언어 구조체(Structure in C, 構造體)는 여러 개의 변수(멤버)를 하나로 묶어 하나의 사용자 정의 자료형으로 정의할 수 있는 기능을 제공하는 자료형이다.

1 개요[편집 | 원본 편집]

구조체는 서로 다른 데이터 타입을 하나의 단위로 묶어야 할 때 사용되며, 배열, 포인터, 함수 등 다양한 데이터 타입을 멤버로 포함할 수 있다. 구조체는 C 프로그램에서 복잡한 데이터를 표현하거나 객체를 흉내 내는 데에 자주 사용된다.

2 구조체 정의[편집 | 원본 편집]

구조체는 `struct` 키워드를 사용하여 정의하며, 다음과 같은 형식을 따른다.

struct 구조체이름 {
    자료형 멤버이름1;
    자료형 멤버이름2;
    ...
};

예시:

struct Point {
    int x;
    int y;
};

3 구조체 변수 선언 및 초기화[편집 | 원본 편집]

정의된 구조체는 다음과 같이 변수를 선언하거나 초기화할 수 있다.

struct Point p1;               // 변수 선언
struct Point p2 = {3, 5};      // 초기화

4 구조체 멤버 접근[편집 | 원본 편집]

구조체 변수의 멤버에 접근할 때는 마침표(`.`) 연산자를 사용한다. 포인터 변수인 경우 화살표(`->`) 연산자를 사용한다.

p1.x = 10;
p1.y = 20;

struct Point* ptr = &p1;
printf("%d", ptr->x);  // 출력: 10

5 typedef를 사용한 구조체 간소화[편집 | 원본 편집]

`typedef`를 이용하면 구조체 이름을 간단하게 별칭으로 정의할 수 있다.

typedef struct Point {
    int x;
    int y;
} Point;

Point p3 = {1, 2};

6 구조체와 함수[편집 | 원본 편집]

구조체는 함수의 인자나 반환값으로 사용할 수 있다.

  • 구조체를 값으로 전달하면 복사본이 전달됨
  • 구조체 포인터를 전달하면 원본 데이터 수정 가능
void move(Point* p, int dx, int dy) {
    p->x += dx;
    p->y += dy;
}

7 중첩 구조체[편집 | 원본 편집]

구조체 안에 다른 구조체를 멤버로 포함할 수 있다.

struct Rectangle {
    struct Point topLeft;
    struct Point bottomRight;
};

8 구조체 배열[편집 | 원본 편집]

구조체는 배열로도 선언 가능하다.

struct Point points[5];
points[0].x = 10;

9 관련 키워드[편집 | 원본 편집]

  • struct
  • typedef
  • 포인터
  • 사용자 정의 자료형

10 같이 보기[편집 | 원본 편집]

11 참고 문헌[편집 | 원본 편집]

  • Brian W. Kernighan, Dennis M. Ritchie, *The C Programming Language*, Prentice Hall, 1988.
  • 한동윤, *명품 C 언어 프로젝트*, 생능출판사, 2020.

12 각주[편집 | 원본 편집]